# @Author   :hcs
# @File     :4-正则表达式之匹配单个字符.py
# @Time     :2025/2/27 下午7:07

import re

"""
re.match()能够匹配出以xxx 开头的字符串
    基本语法:
re.match(pattern, string, flags=0)  
pattern：要匹配的正则表达式模式，可以是字符串形式的正则表达式，也可以是已经通过re.compile()编译后的正则表达式对象。
string：要在其中进行匹配操作的目标字符串。
flags：可选参数，用于指定正则表达式的匹配模式，如re.I（忽略大小写）、re.M（多行模式）等，可以使用按位或运算符|组合多个标志。
    返回值:
如果在字符串的起始位置匹配成功，re.match返回一个匹配对象MatchObject，该对象包含了有关匹配的详细信息，如匹配的内容、位置等。
如果匹配失败，则返回None。
"""

result = re.match("wangdao", "wangdao.cn")
if result:
    print(result.group())

# . :表示匹配任意1个字符（除了\n）
ret = re.match(".", "M")
print(ret.group())
ret = re.match("t.o", "too")
print(ret.group())
ret = re.match("t.o", "two")
print(ret.group())

print('-' * 50)

# []:表示匹配[]中列举的字符
# 如果hello的首字符小写，那么正则表达式需要小写的h
ret = re.match("h", "helloPython")
print(ret.group())
# 如果hello的首字符大写，那么正则表达式需要大写的H
ret = re.match("H", "Hello Python")
print(ret.group())
# 大小写h都可以的情况
ret = re.match("[hH]", "hello Python")
print(ret.group())
ret = re.match("[hH]", "Hello Python")
print(ret.group())
ret = re.match("[hH]ello Python", "Hello Python")  # 不管是大写开头还是小写开头的hello python都要
print(ret.group())

print('-' * 50)

# 匹配0到9第一种写法
ret = re.match("[0123456789]Hello Python", "7Hello Python")
print(ret.group())
# 匹配0到9第二种写法
ret = re.match("[0-9]Hello Python", "7Hello Python")
print(ret.group())
ret = re.match("[0-35-9]Hello Python", "7Hello Python")
print(ret.group())
# 下面这个正则不能够匹配到数字4，因此ret为None
ret = re.match("[0-35-9]Hello Python", "4Hello Python")
# print(ret.group())

# \d:表示匹配数字，即0-9 decimal
# 普通的匹配方式
ret = re.match("嫦娥1号", "嫦娥1号发射成功")
print(ret.group())
ret = re.match("嫦娥2号", "嫦娥2号发射成功")
print(ret.group())
ret = re.match("嫦娥3号", "嫦娥3号发射成功")
print(ret.group())
# 使用\d进行匹配
ret = re.match(r"嫦娥\d号", "嫦娥1号发射成功")
print(ret.group())
ret = re.match(r"嫦娥\d号", "嫦娥2号发射成功")
print(ret.group())
ret = re.match(r"嫦娥\d号", "嫦娥3号发射成功")
print(ret.group())
